/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package SysAguas.controle;

import SysAguas.dao.DAOQuarto;
import SysAguas.dao.DAOReserva;
import SysAguas.modelo.Quarto;
import SysAguas.modelo.Reserva;
import SysAguas.modelo.TipoQuarto;
import SysAguas.visao.DialogGerenciarQuartos;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/**
 *
 * @author Heitor
 */
public class QuartoGerenciarServico implements ActionListener {

    private DialogGerenciarQuartos gerQuartos = null;
    private DAOQuarto daoq = new DAOQuarto();

    public QuartoGerenciarServico(DialogGerenciarQuartos dgq) {
        this.gerQuartos = dgq;
    }

    public void actionPerformed(ActionEvent e) {
//botão fechar
        if (e.getSource() == gerQuartos.getFechar()) {
            this.gerQuartos.dispose();
        }
//botão pesquisar
        if (e.getSource() == this.gerQuartos.getPequisarQuarto()) {

            if (this.gerQuartos.getNumerodoq().getText().equals("")) {

                JOptionPane.showMessageDialog(gerQuartos, "Digite um numero para Pesquisar");
                return;
            }
            Integer intt = null;
            try {
                intt = Integer.parseInt(this.gerQuartos.getNumerodoq().getText());
            } catch (NumberFormatException ex) {
                JOptionPane.showMessageDialog(gerQuartos, "Digite um NUMERO", "Erro", JOptionPane.ERROR_MESSAGE);
                return;
            }
            Quarto quarto = new Quarto();
            quarto = daoq.consultaByChave(intt);

            if (quarto == null) {
                JOptionPane.showMessageDialog(gerQuartos, "Quarto Não Existe", "Erro", JOptionPane.ERROR_MESSAGE);
                return;
            }
            gerQuartos.getNomeT().setText(quarto.getNome());
            gerQuartos.getCapacidadeT().setText(quarto.getCapacidade().toString());
            gerQuartos.getComboBox().setSelectedItem(TipoQuarto.valueOf(quarto.getTipoQuarto().toString()));
            gerQuartos.getDescricao().setText(quarto.getDescricao());
            gerQuartos.getNumeroT().setText(quarto.getNumeroQuarto().toString());
            gerQuartos.getDiariaT().setText(String.valueOf(quarto.getValorDiaria()));
            if (quarto.getReservaQ() == null) {
                gerQuartos.getReservaTF().setText("");
                return;
            }
            gerQuartos.getReservaTF().setText(String.valueOf(quarto.getReservaQ().getId()));

        }

//botão limpar
        if (e.getSource() == this.gerQuartos.getLimpar()) {

            limparCampos(gerQuartos);
        }
//botão salvar
        if (e.getSource() == this.gerQuartos.getSalvarQuarto()) {

            if (gerQuartos.getNumeroT().getText().equals("")) {
                JOptionPane.showMessageDialog(gerQuartos, "Pesquise um Quarto primeiro!!", "Erro", JOptionPane.ERROR_MESSAGE);
                return;
            }

            if ((JOptionPane.showConfirmDialog(gerQuartos, "Deseja alterar o Quarto:"
                    + gerQuartos.getNumerodoq().getText(), "Warning", JOptionPane.WARNING_MESSAGE)) == JOptionPane.OK_OPTION) {

                Quarto quarto = new Quarto();
                quarto = popularQuarto(gerQuartos);
                daoq.atualizar(quarto);
                JOptionPane.showMessageDialog(gerQuartos, "Quarto:" + quarto.getNumeroQuarto() + " atualizado.", "Update", JOptionPane.INFORMATION_MESSAGE);


            }
        }
        if (e.getSource() == gerQuartos.getExcluirQuarto()) {

            if (gerQuartos.getNumeroT().getText().equals("")) {
                JOptionPane.showMessageDialog(gerQuartos, "Pesquise um Quarto primeiro!!", "Erro", JOptionPane.ERROR_MESSAGE);
                return;
            }
            if ((JOptionPane.showConfirmDialog(gerQuartos, "Você quer excluir o Quarto:" + gerQuartos.getNumeroT().getText(), "Warning", JOptionPane.WARNING_MESSAGE)) == JOptionPane.OK_OPTION) {

                Integer i = Integer.parseInt(gerQuartos.getNumeroT().getText());

                daoq.exclirBYChave(i);
                JOptionPane.showMessageDialog(gerQuartos, "Quarto: " + i + " excluido!", "OK", JOptionPane.INFORMATION_MESSAGE);

                limparCampos(gerQuartos);



            }
        }
    }

    private Quarto popularQuarto(DialogGerenciarQuartos dialog) {
        Quarto toReturn = new Quarto();

        DAOReserva dao = new DAOReserva();

        toReturn.setCapacidade(Integer.parseInt(dialog.getCapacidadeT().getText()));
        toReturn.setDescricao(dialog.getDescricao().getText());
        toReturn.setNome(dialog.getNomeT().getText());
        toReturn.setNumeroQuarto(Integer.parseInt(dialog.getNumeroT().getText()));
        toReturn.setTipoQuarto(TipoQuarto.valueOf(dialog.getComboBox().getSelectedItem().toString()));
        toReturn.setValorDiaria(Double.parseDouble(dialog.getDiariaT().getText()));
        if (!dialog.getReservaTF().getText().equals("")) {
            Reserva reserva = new Reserva();
            reserva = dao.consultaByChave(Integer.parseInt(dialog.getReservaTF().getText()));
            toReturn.setReservaQ(reserva);
            reserva.setQuarto(toReturn);
            dao.atualizar(reserva);
        }
        return toReturn;

    }

    private void limparCampos(DialogGerenciarQuartos gerQuartos) {
        gerQuartos.getNumerodoq().setText("");
        gerQuartos.getNomeT().setText("");
        gerQuartos.getCapacidadeT().setText("");
        gerQuartos.getComboBox().setSelectedItem(TipoQuarto.SOLTEIRO_SIMPLES);
        gerQuartos.getDescricao().setText("");
        gerQuartos.getNumeroT().setText("");
        gerQuartos.getDiariaT().setText("");
        gerQuartos.getReservaTF().setText("");

    }
}
